b3c529
@@ -594,7 +594,13 @@
public static String findUserDNByPattern(DirContext ctx, String userName)
 
     SearchControls searchControls = new SearchControls();
     List<String> list             = new ArrayList<String>();
-    String[] returnAttributes     = new String[0]; //empty set
+    String[] returnAttributes;
+    if (groupMembership_attr != null) {
+      // retrieve the attributes that are meant to desginate user DNs
+      returnAttributes = new String[] { groupMembership_attr };
+    } else {
+      returnAttributes = new String[0]; //empty set
+    }
 
     searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
     searchControls.setReturningAttributes(returnAttributes);
@@ -604,6 +610,14 @@
public static String findUserDNByPattern(DirContext ctx, String userName)
     SearchResult searchResult = null;
     while(results.hasMoreElements()) {
       searchResult = results.nextElement();
+      if (groupMembership_attr != null) {
+        Attribute userAttribute = searchResult.getAttributes().get(groupMembership_attr);
+        if (userAttribute != null) {
+          list.add((String)userAttribute.get());
+          continue;
+        }
+      }
+
       list.add(searchResult.getNameInNamespace());
       LOG.debug("LDAPAtn:executeLDAPQuery()::Return set size " + list.get(list.size() - 1));
     }
@@ -632,5 +646,4 @@
public static String extractBaseDN(String dn) {
     }
     return null;
   }
-
 }
